home *** CD-ROM | disk | FTP | other *** search
- public class POP3Reader {
- protected static long idleTime = 0L;
- protected static boolean popDebug = false;
- protected static int popMessageCount;
-
- public static boolean deleteMessageFromServer(int var0) {
- Globals.writeLine(Globals.POP3_DELE + var0);
- if (!Globals.waitForMessage(Globals.RESPONSE_OK, true)) {
- MicroMail.printInfo("Error deleting message #" + var0 + " from server");
- } else {
- MicroMail.printInfo("Message #" + var0 + " deleted from server");
- }
-
- return true;
- }
-
- public static Message getMessageAtOnce(int var0, int var1) {
- Object var2 = null;
- Message var3;
- if (readWholeMessage(var0, var1)) {
- var3 = parseMessage(var1);
- } else {
- var3 = null;
- }
-
- System.gc();
- var3.unread = true;
- return var3;
- }
-
- public static String[] getMessageIDs(int var0) {
- int var1 = -1;
- int var2 = -1;
- String[] var3 = new String[var0];
- Globals.writeLine(Globals.POP3_UIDL);
- if (!Globals.waitForMessage(Globals.RESPONSE_OK, true)) {
- return null;
- } else {
- int var4 = 0;
-
- while((var2 = Globals.readLine()) > -1 && !Globals.startsWith('.', 0)) {
- if (var4 < var0) {
- var1 = Globals.indexOf(' ', 0, var2) + 1;
- if (var1 > 0) {
- var3[var4] = new String(Globals.byteArray, var1, var2 - var1);
- } else {
- var3[var4] = null;
- }
-
- ++var4;
- }
- }
-
- System.gc();
- return var3;
- }
- }
-
- public static int[] getMessageLengths(int var0) {
- int var1 = -1;
- int var2 = -1;
- int[] var3 = new int[var0];
- Globals.writeLine(Globals.POP3_LIST);
- if (!Globals.waitForMessage(Globals.RESPONSE_OK, true)) {
- return null;
- } else {
- int var4 = 0;
-
- while((var2 = Globals.readLine()) > -1 && !Globals.startsWith('.', 0)) {
- if (var4 < var0) {
- var1 = Globals.indexOf(' ', 0, var2) + 1;
- if (var1 > -1) {
- var3[var4] = Globals.makeInt(var1, var2 - 1);
- }
-
- ++var4;
- }
- }
-
- System.gc();
- return var3;
- }
- }
-
- public static int getMessagesCount() {
- int var0 = -1;
- Globals.writeLine(Globals.POP3_STAT);
- var0 = Globals.readLine();
- var0 = Globals.indexOf(' ', 4, var0);
- var0 = Globals.makeInt(4, var0 - 1);
- System.gc();
- return var0;
- }
-
- public static Message parseMessage(int var0) {
- int var1 = 0;
- int var2 = 1;
- int var3 = 0;
- boolean var6 = false;
- Message var7 = new Message();
- var7.body = null;
- Object var9 = null;
-
- for(int var4 = var0; var1 < var4 & (var6 ^ true); var1 = var2 + 1) {
- var2 = Globals.indexOf('\n', var1, var4);
- if (var2 < 0) {
- var2 = var0;
- }
-
- if (!Globals.startsWith(' ', var1) && !Globals.startsWith('\t', var1)) {
- String var8 = new String(Globals.byteArray, var1, var2 - var1);
- var3 = Message.startsWithHeaderItem(var8);
- if (var3 > -1) {
- var7.setItem(var8, var3);
- }
- } else {
- var7.appendItem(new String(Globals.byteArray, var1, var2 - var1), var3);
- }
-
- var6 = var2 == var1 + 1;
- }
-
- System.gc();
- Object var10 = null;
- String var15 = var7.contentType;
- if (var15.startsWith(" multipart")) {
- int var11 = var15.indexOf("boundary");
- var15 = var15.substring(var11 + 10, var15.length() - 2);
- } else {
- var15 = null;
- }
-
- if (var15 != null) {
- var6 = false;
- var1 = Globals.indexOf(var15, var2, var0) + var15.length();
-
- while(!var6) {
- var2 = Globals.indexOf(var15, var1, var0);
- if (var2 > -1) {
- int var5 = Globals.indexOf("\n\r\n", var1, var0);
- if (Globals.indexOf("text/plain", var1, var5) > -1) {
- Globals.bodyStart = var5 + 2;
- Globals.bodyLen = var2 - var5 - 4;
- var6 = true;
- }
-
- var1 = var2 + var15.length();
- } else {
- var6 = true;
- }
- }
- } else {
- Globals.bodyStart = var1;
- Globals.bodyLen = var0 - var1;
- }
-
- System.gc();
- return var7;
- }
-
- public static boolean readWholeMessage(int var0, int var1) {
- Globals.writeLine(Globals.POP3_RETR + var0);
- if (!Globals.waitForMessage(Globals.RESPONSE_OK, true)) {
- return false;
- } else {
- try {
- Globals.in.read(Globals.byteArray, 0, var1);
- if ((char)Globals.byteArray[var1 - 3] != '.') {
- Globals.in.read();
- }
-
- System.gc();
- return true;
- } catch (Exception var3) {
- ((Throwable)var3).printStackTrace();
- return false;
- }
- }
- }
- }
-